/**
 * @file UpdateObject.h
 * @author GL (you@domain.com)
 * @brief 接口相关
 * @version 0.1
 * @date 2024-03-13
 * 
 * @copyright Copyright (c) 2024
 * 
 */
#pragma once
#include <memory>
#include <geometry_msgs/PoseStamped.h>

namespace iusc{
    enum CustomObjectID {GATE=0,UGV_VEHICLE=1,UGV_FORMATION=2};  // 自定义的对象ID
    class UpdateObject{
        public:
            using Ptr = std::shared_ptr<UpdateObject>;
            virtual void initialize() = 0;
            virtual void update(double dt) = 0;
            virtual void getPose(geometry_msgs::PoseStamped& pose) const = 0;  // 获取位置
            CustomObjectID Type() const {return m_id;};
        protected:
            CustomObjectID m_id;  // 用于标识的id
    };
}